home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 051-075 / disk_071 / amibas / caleidoscope (.txt) < prev    next >
AmigaBASIC Source Code  |  1992-05-06  |  2KB  |  60 lines

  1. ' Caleidoscope in Basic
  2. ' by Peter Kittel, last change 5 Dec 86 
  3.  
  4. PRINT "     Caleidoscope in Basic"
  5. PRINT "     =====================":PRINT 
  6. PRINT "The number of BitPlanes gives the
  7. PRINT "number of colors (6/12/30, colors 
  8. PRINT "0 and 1 not touched), but also
  9. PRINT "speed and storage amount.
  10. PRINT "On a 256KB Amiga ONLY USE 3!
  11. PRINT "So: 3 means simple colors with high speed,
  12. PRINT "    5 means subtle colors in slow motion.
  13. PRINT 
  14.  
  15. PRINT "Number of BitPlanes (3 to 5) = ? ";
  16. WHILE a$<"3" OR a$>"5":a$=INKEY$:WEND:PRINT a$:nf=VAL(a$)
  17. nn=INT(2^nf+0.5)-1
  18.  
  19. SCREEN 1,320,200,nf,1    ' Screen in low res (many colors possible)
  20. x0=0:y0=0:x9=310:y9=185
  21. WINDOW 2,"Caleidoscope (quit with q key)   "+CHR$(nf+48),(x0,y0)-(x9,y9),0,1
  22. dx=2:dy=2
  23. x=x0:y=y0:d=2
  24. DIM pr(nn),pg(nn),pb(nn)
  25. FOR i=2 TO nn:PALETTE i,0,0,0:NEXT
  26. fr=0:fg=0:fb=0:pf=0:ff=4000:fs=0
  27.  
  28. ' The precise way of color modification
  29. ' is determined by variables fs and ff
  30. ' in next lines.
  31. ' Here is much room for own experiments.
  32. WHILE INKEY$<>"q" ' infinite loop until q key pressed
  33.   fs=fs+0.1:IF fs>7 THEN fs=fs-7
  34.   ff=ff+273.16*(1+INT(COS(fs)*2.2)):IF ff>4095 THEN ff=ff-4095
  35.   fr= INT(ff)AND 15
  36.   fg=(INT(ff)AND 15*16 )/16
  37.   fb=(INT(ff)AND 15*256)/256
  38.   ' reassign palette cyclically
  39.   FOR i=nn TO 3 STEP -1:pr(i)=pr(i-1):pg(i)=pg(i-1):pb(i)=pb(i-1):NEXT
  40.   pr(2)=fr/15:pg(2)=fg/15:pb(2)=fb/15 ' neue Farbe
  41.   FOR i=2 TO nn:PALETTE i,pr(i),pg(i),pb(i):NEXT
  42.   ' watch for proper coordinates
  43.   xn=x+dx:IF xn<x0 OR xn>x9 THEN dx=-dx:xn=x+dx
  44.   yn=y+dy:IF yn<y0 OR yn>y9 THEN dy=-dy:yn=y+dy
  45.   x=xn:y=yn
  46.   ad=x-x0
  47.   IF x9-x<ad THEN ad=x9-x
  48.   IF y9-y<ad THEN ad=y9-y
  49.   IF y-y0<ad THEN ad=y-y0
  50.   d=d+1:IF ad<d THEN d=ad
  51.   pf=pf+1:IF pf>nn THEN pf=2
  52.   LINE (x-d,y-d)-(x+d,y+d),pf,bf     ' square
  53.   PSET (x-d,y-d),1:PSET (x-d,y+d),1  ' white dots in corners
  54.   PSET (x+d,y-d),1:PSET (x+d,y+d),1
  55.   WEND
  56.   
  57. WINDOW CLOSE 2:SCREEN CLOSE 1 ' end
  58. WINDOW 1  
  59.  
  60.